package com.thz.common.enums;

import lombok.Getter;

/**
 * 错误码枚举
 * 
 * @author THZ
 * @date 2025
 */
@Getter
public enum ErrorCode {
    
    // ==================== 通用错误 2000-2099 ====================
    SYSTEM_ERROR(2000, "系统异常"),
    SERVICE_ERROR(2001, "服务异常"),
    PERMISSION_DENIED(2002, "权限不足"),
    PARAMS_ERROR(2003, "selection 不能为空"),
    SERVER_BUSY(2004,"服务器繁忙，请稍后再试"),
    
    // ==================== 文件相关错误 3000-3099 ====================
    FILE_EMPTY(3000, "上传文件不能为空"),
    FILE_SIZE_EXCEED(3001, "文件大小不能超过100MB"),
    FILE_NAME_EMPTY(3002, "文件名不能为空"),
    FILE_NO_EXTENSION(3003, "格式错误：文件没有扩展名"),
    FILE_FORMAT_NOT_SUPPORTED(3004, "格式错误：不支持该文件格式"),
    FILE_TYPE_INVALID(3005, "格式错误：无法识别文件类型"),
    FILE_MIME_TYPE_INVALID(3006, "格式错误：文件类型不是有效的视频格式"),
    FILE_SAVE_FAILED(3007, "文件保存失败"),
    FILE_NOT_FOUND(3008,"输入文件不存在"),
    PARAM_ERROR(3009,"不支持的转换类型"),
    FILE_FORMAT_ERROR(3010,"不支持的图片格式，请上传 JPG、PNG、WEBP 或 BMP 格式的图片"),
    FILE_INVALID(3011,"无法读取图片文件"),
    FILE_TOO_LARGE(3012,"文件大小不能超过20MB"),
    FILE_SAVE_ERROR(3013,"无法创建输出目录"),
    FILE_UPLOAD_FAILED(3014, "文件上传失败"),
    FILE_DOWNLOAD_FAILED(3015, "文件下载失败"),

    // ==================== 转换相关错误 4000-4099 ====================
    CONVERSION_FAILED(4000, "转换失败"),
    CONVERSION_RECORD_NOT_EXISTS(4001, "转换记录不存在"),
    FFMPEG_EXECUTION_FAILED(4002, "FFmpeg执行失败"),
    GIF_GENERATION_FAILED(4003, "GIF文件生成失败，输出文件不存在"),
    VIDEO_TO_GIF_FAILED(4004, "视频转GIF失败"),
    VIDEO_INFO_RETRIEVAL_FAILED(4005,"无法获取视频分辨率"),
    LIBREOFFICE_NOT_CONFIGURED(4006, "LibreOffice未配置，无法执行转换"),
    LIBREOFFICE_EXECUTION_FAILED(4007, "LibreOffice执行失败"),
    DOCUMENT_CONVERT_TIMEOUT(4008, "文档转换超时，请稍后重试"),



    // ==================== 用户错误 5000-5099 ====================
    USER_NOT_EXISTS(5000, "用户不存在");
    
    /**
     * 错误码
     */
    private final Integer code;
    
    /**
     * 错误消息
     */
    private final String message;
    
    ErrorCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
}

